package monitoreomedios

import org.springframework.dao.DataIntegrityViolationException

class UsuarioController {

    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

    def index() {
        redirect(action: "list", params: params)
    }

    def create() {
        [usuarioInstance: new Usuario(params)]
    }

    def list() {
	    if(flash.busqueda!=null){
		    println "entro"
		    def b = flash.busqueda
		    flash.busqueda=null
        	    params.max = Math.min(params.max ? params.int('max') : 10, 100)
        	    [usuarioInstanceList: b, usuarioInstanceTotal: Usuario.count()]
	    }else{
	    println "salio"
        	params.max = Math.min(params.max ? params.int('max') : 10, 100)
        	[usuarioInstanceList: Usuario.list(params), usuarioInstanceTotal: Usuario.count()]
	    }
    }

 def save() {
	if(validaPass())
		if(validaTerminos()){
       	 		def usuarioInstance = new Usuario(params)	
			if (!usuarioInstance.save(flush: true)) {
            			render(view: "create", model: [usuarioInstance: usuarioInstance])
            			return
        		}
			else{
				flash.message = message(code: 'default.created.message', args: [message(code: 'usuario.label', default: 'Usuario'), usuarioInstance.id])
        			session.usuario = usuarioInstance.id
				session.nombreUsuario = usuarioInstance.nombre
				session.role = usuarioInstance.role
				redirect(url: "http://localhost:8080/MonitoreoMedios")
			}
		}
		else{
			flash.message = "no acepto los terminos de uso"
			
            			render(view: "create", model: [usuarioInstance: usuarioInstance])
            			return
        		
		}
	
    }



    def show() {
        def usuarioInstance = Usuario.get(params.id)
        if (!usuarioInstance) {
			flash.message = message(code: 'default.not.found.message', args: [message(code: 'usuario.label', default: 'Usuario'), params.id])
            redirect(action: "list")
            return
        }

        [usuarioInstance: usuarioInstance]
    }

    def edit() {
        def usuarioInstance = Usuario.get(params.id)
        if (!usuarioInstance) {
            flash.message = message(code: 'default.not.found.message', args: [message(code: 'usuario.label', default: 'Usuario'), params.id])
            redirect(action: "list")
            return
        }

        [usuarioInstance: usuarioInstance]
    }

    def update() {
        def usuarioInstance = Usuario.get(params.id)
        if (!usuarioInstance) {
            flash.message = message(code: 'default.not.found.message', args: [message(code: 'usuario.label', default: 'Usuario'), params.id])
            redirect(action: "list")
            return
        }

        if (params.version) {
            def version = params.version.toLong()
            if (usuarioInstance.version > version) {
                usuarioInstance.errors.rejectValue("version", "default.optimistic.locking.failure",
                          [message(code: 'usuario.label', default: 'Usuario')] as Object[],
                          "Another user has updated this Usuario while you were editing")
                render(view: "edit", model: [usuarioInstance: usuarioInstance])
                return
            }
        }

        usuarioInstance.properties = params

        if (!usuarioInstance.save(flush: true)) {
            render(view: "edit", model: [usuarioInstance: usuarioInstance])
            return
        }

		flash.message = message(code: 'default.updated.message', args: [message(code: 'usuario.label', default: 'Usuario'), usuarioInstance.id])
        redirect(action: "show", id: usuarioInstance.id)
    }

    def delete() {
        def usuarioInstance = Usuario.get(params.id)
        if (!usuarioInstance) {
			flash.message = message(code: 'default.not.found.message', args: [message(code: 'usuario.label', default: 'Usuario'), params.id])
            redirect(action: "list")
            return
        }

        try {
            usuarioInstance.delete(flush: true)
			flash.message = message(code: 'default.deleted.message', args: [message(code: 'usuario.label', default: 'Usuario'), params.id])
            redirect(action: "list")
        }
        catch (DataIntegrityViolationException e) {
			flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'usuario.label', default: 'Usuario'), params.id])
            redirect(action: "show", id: params.id)
        }
    }
def login()
	{
		
	}
	
	def logout()
	{
		session.usuario = null
		session.nombreUsuarip = null
		redirect(controller:"usuario", action:"login")
	}
	
	
	def validarLogin()
	{
		
		def user = Usuario.findByEmailAndPassword(params.email, params.password)
		println user
		if(user)
		{
			session.usuario = user.id
			session.nombreUsuario = user.nombre
			session.role = user.role
			if(user.role.equals('admin'))
				redirect(controller:"usuario", action:"list")
			else
				redirect(controller:"campana", action:"list")
		}
		else
		{
			flash.message = "Error al iniciar sesion, email o contraseña incorrectos"
			redirect(controller:"usuario", action:"login")
		}	
	}

	def validaPass(){
		if(params.password==params.cpassword)
			true;
	}

	def validaTerminos(){

		if(params.privado.equals('on'))
				true;
	}

	def busca(){
		def user
		if(params.tipo.equals('nombre'))
				user = Usuario.findAllByNombreLike("$params.cliente%" )
		else
			user = Usuario.findAllByEmailLike("$params.cliente%")
		flash.busqueda = user
		println flash.busqueda
		redirect(action:"list")	
			
		
	}

}
